home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nightshift Sound & Vision
/
Nightshift - Sound & Vision.iso
/
programs
/
sound
/
play16
/
play16.dok
< prev
next >
Wrap
Text File
|
1995-06-22
|
19KB
|
447 lines
--------------------------------------------------------------------------
- Play16 Version 1.4 (22.06.95) - Ein flexibler Soundabspieler fⁿr Amiga -
--------------------------------------------------------------------------
Kurzⁿbersicht
-------------
- erkennt und spielt automatisch verschiedene Soundformate, bis zu
16 Bit, 56 kHz, stereo
- volle Workbench-Unterstⁿtzung, jedoch kein GUI
- immer korrekte Wiedergabegeschwindigkeit, sogar bei Sounds >28 kHz
- Echtzeitwiedergabe von Festplatte, optimierte Assembler-Routinen
- 14 Bit Ausgabe m÷glich (weniger Rauschen, aber schlechter als 16 Bit)
- automatische oder manuelle Filter-Kontrolle
- spielt Mono-Sounds auf BEIDEN KanΣlen, nicht nur auf dem linken
- spielt (und wiederholt) Files, die gr÷▀er als der Speicher sind
- Vorlade-Funktion fⁿr Tastengenaues Playback-Starten
- schnelle uLaw Entpackfunktion
- Systemfreundliche Tonkanal-Belegung
- Ausgabe in ein File ist m÷glich (Sound-Konvertierung)
- unterstⁿtzte Filetypen bislang:
* Microsoft RIFF-WAVE (.WAV) mono / stereo, 8 / 16 bit, linear / uLaw
* Creative Voice File (.VOC) mono / stereo, 8 / 16 bit, linear
* Sun/NeXT Audio (.AU) mono / stereo, 8 / 16 bit, linear / uLaw
* MacroSystem MAUD (.MAUD) mono / stereo, 8 / 16 bit, linear
* Apple/SGI/Amiga AIFF (.AIFF) mono / stereo, 8 / 16 bit, linear
* Amiga IFF-8SVX (.IFF) mono / stereo, 8 bit, linear
* Raw-Sound-Daten mit mindestens einer folgender Voraussetzungen:
- 8 bit Vorzeichenbehaftet
- 8 bit nicht Vorzeichenbehaftet
- 16 bit signed, Intel Format (LSB zuerst)
- 16 bit signed, Motorola Format (MSB zuerst)
- derzeitig unterstⁿtzte AusgabegerΣte:
* Amiga (Paula) 8 bit
* Amiga (Paula) 14 bit
* Amiga (Paula) 14 bit kalibriert (Christian Buchner)
* MacroSystem Maestro Pro 16 bit 44.1kHz und 48kHz
* IFF-8SVX File Ausgabe 8 bit
========================== Kapitel 1: Quick Start =========================
Was wird fⁿr Play16 ben÷tigt?
-----------------------------
Ein Amiga mit mindestens Kickstart/Workbench 2.04.
Um die kalibrierte 14Bit-Ausgabe zu verwenden, mu▀ ein gⁿltiges
CyberSound-Preferenzfile im ENVARC: vorhanden sein. Wenn ein solches noch
nicht erstellt wurde, kann es mit Christians Kalibrierungsprogramm, das
sich in diesem Archiv befindet, erzeugt werden.
Maestix.library V38 wird fⁿr die MPro-Ausgabe ben÷tigt.
Wo finde ich die neueste Version?
---------------------------------
- FIDONET: Amiga Venture BBS, Germany (2:243/6050)
- AMINET: mus/play
- WWW: http://linux.rz.fh-hannover.de/~wenzel/Play16/
ferner empfehle ich, folgende Pakete anzusehen:
CyberSound:
- AMINET: disk/cdrom/14Bit_CDPlayer.lha
Maestix:
- AMINET: util/libs/Maestix38_00.lha
Wie verwende ich es?
--------------------
CLI: "Play16 <filename>" - das ist alles!
Workbench: Nach einem Doppelklick auf das Icon erscheint ein Filerequester.
Alle m÷glichen Optionen werden spΣter erlΣutert. Wenn keine Option gesetzt
ist, werden die Standardwerte angenommen.
================= Kapitel 2: Hintergrunds-Informationen ===================
Was tut es?
-----------
GrundsΣtzlich ist Play16 in der Lage, unkomprimierte und _einige_
komprimierte Soundfiles mit dem Standard Amiga AudioDevice abzuspielen
oder eine wachsende Anzahl externer GerΣte anzusteuern. Sollte die dazu
ben÷tigte Aufl÷sung oder Wiedergabegeschwindigkeit eines Sample-Files die
M÷glichkeiten der Amigahardware ⁿberschreiten, wird eine Echtzeit-Anpassung
vorgenommen, so da▀ der Sound immer korrekt wiedergegeben wird.
Es k÷nnen sogar 16 Bit/44.1kHz Sounds wiedergegeben werden, vorausgesetzt,
alle Elemente des verwendeten Systems kommen mit der hohen Datentransferrate
mit. In einem solchen Fall ist ein beschleunigter Amiga eine sinnvolle
Sache!
Die beiden AudiokanΣle einer jeden Seite k÷nnen miteinander verbunden
werden um eine 14Bit Ausgabe zu erm÷glichen. Dies erfordert jedoch
ebenfalls eine Menge Rechenzeit.
Auf jeden Fall ist mein Amiga 3000-16MHz schnell genug, ein unkomprimiertes
Soundfile mit 44.1kHz/14Bit (Productivity Mode!) direkt von der Festplatte
abzuspielen.
Ich habe nicht vor, Play16 soweit zu erweitern, da▀ es jedes, aber auch
jedes exotische Format, das irgendwo existieren mag, unterstⁿtzt. Dennoch
versuche ich, soviele verbreitete Formate wie m÷glich einzubinden.
Warum Play16?
-------------
16Bit Soundkarten werden immer populΣrer, besonders auf PCs. Das
verbreitete Format dort ist Microsoft (÷rks! :-) ) RIFF-WAVE Format.
Ich konnte kein CLI-Programm zum Abspielen von 16Bit-Aufnahmen finden,
also entschied ich mich, selber eines zu schreiben: Play16.
Warum CLI - und keine GUI?
--------------------------
Es gibt so viele GUI unterstⁿtzende Directory-Utilities - Play16 kann
einfach als externer Player eingebunden werden. Die begleitende
Dokumentation der Directory-Programme sollte erlΣutern, wie dies m÷glich
ist. Ein Beispiel wΣre: Ein Schalter namens "Jingle" wird angelegt und
enthΣlt die Funktion "Play16 <filename> PRELOAD". Nachdem dann das
gewⁿnschte Soundfile angewΣhlt und der Schalter "Jingle" angeklickt wurde,
kann per Tastendruck die Wiedergabe des Sounds gestartet werden. Das ist
besonders brauchbar auf Partys oder beim Nachvertonen von Videos ;-)
Wie funktioniert es?
--------------------
Das gew÷hnliche Amiga Audio Device ist beschrΣnkt auf 8Bit, 28kHz
Wiedergabegeschwindigkeit mit DMA. Mit der Einfⁿhrung des ECS wurde die
28kHz Barriere ⁿberwunden, jedoch nur, wenn der aktuelle Displaymodus einer
mit doppelter Scanrate war, wie z.B. Productivity. Der Grund hierfⁿr ist
die AbhΣngigkeit von Video- und Audio-DMA. Sollte kein ECS-Chipsatz
vorhanden sein oder ist das Umschalten auf Productivity nur zum Anh÷ren
eines Sounds unerwⁿnscht, kann Play16 die Wiedergaberate wΣhrend des
Abspielens halbieren.
Ein anderer Weg, hohe WiedergabequalitΣt zu erlangen, ist IRQ. Das
funktioniert unabhΣngig vom Displaymodus. Ich habe, lange bevor ich an
Play16 zu schreiben angefangen habe, damit herumexperimentiert, es waren
aber immer derart viele "Jitter"-St÷rungen, da▀ meine heute verwendete
Wiedergabe Methode doch erheblich besser klingt.
Um auch lange Sounds wiedergeben zu k÷nnen, wird die oft verwendete
DoubleBuffer-Methode benutzt. Alternativ k÷nnen auch alle Daten in den
Speicher geladen werden, dies ist zum Abspielen kurzer Sounds oder zum
Wiedergeben von langsamen Medien wie Floppies oder CD-Rom sinnvoll.
Die 14Bit Ausgabe wird erreicht, indem ein Kanal auf jeder Seite auf
LautstΣrke 64, der andere auf LautstΣrke 1 gesetzt wird. Der lautere Kanal
reprΣsentiert dann die oberen 8 Bit, wΣhrend der leisere die unteren 6
Bit wiedergibt. Da das Timing bei dieser Methode sehr kritisch ist, ist es
n÷tig, direkt auf die Hardware zuzugreifen, anstatt das audio.device zu
verwenden. Diese Methode mag in zukⁿnftigen Amiga-Modellen nicht mehr
m÷glich sein - sollte es solche jemals geben... :-/
Unglⁿcklicherweise sind die DACs im Amiga nicht linear. Eine erhebliche
SoundqualitΣtssteigerung kann daher mit einer Kalibrierung der
MSB-Konvertierung erreicht werden. Dazu mu▀, mit Christian Buchners
CyberSound System, jeder Schritt einzeln eingestellt werden. Play16 kann
die erstellten Preferenzfiles von CyberSound einlesen.
Die MPro Ausgabe verwendet die maestix.library von Richard K÷rber. Weitere
Details sind im Maestix-Paket auf dem Aminet zu finden.
=========================== Kapitel 3: Optionen ============================
Welche Optionen gibt es?
------------------------
Es gibt drei Wege, Optionen an Play16 zu ⁿbergeben:
CLI: In der Kommandozeile, AmigaOS 2.x Template
Workbench: Im Icon, Amiga Workbench Tooltype EintrΣge
Generell: Mit dem Setzen von Enviroment-Variablen. Dies ist noch nicht
fⁿr alle Funktionen m÷glich.
Die Tooltype EintrΣge sind identisch mit dem Keywords, die in der
Kommandozeile ⁿbergeben werden k÷nnen. Fⁿr weitere Informationen ⁿber die
Verwendung von Keywords oder Tooltypes sei ein Blick in die AmigaOS-
Dokumentationen empfohlen. Die Enviroment-Variablen bestehen einfach aus
dem entsprechenden Namen und sind in ENV:Play16 abgelegt.
Grundlegende Optionen: (Alle Optionen mit (*) erlauben entsprechende
ENV-Variablen)
WINDOW/K(*) Ausgabefenster-Gr÷▀e. Dieses Keyword kann nur als ToolType
eingetragen werden - und zwar nur im Play16 Icon selber. Wenn
es nicht angegeben wird, werden die programmierten Werte ver-
wendet.
VERBOSITY/N Gibt den Grad der Informationsmenge an.
0: Nur Banner und Error-Meldungen
1: gibt Informationen ⁿber das Soundfile und den verwendeten
Speicher aus
2: Informationen ⁿber Programmschritte
3: Debugging Informationen (dⁿrfte wild aussehen :) )
Voreinstellung ist Level 0.
FAST/S schaltet NICHT automatisch auf halbe Wiedergaberate herunter,
wenn die im Soundfile angegebene Rate 28kHz ⁿberschreitet.
Diese Option ist sinnvoll, wenn der Amiga im Productivity oder
Σhnlichen Bildschirmmodi lΣuft.
HIFI/S Seit V1.4 ⁿberflⁿssig, aber aus KompatiblitΣtsgrⁿnden noch
enthalten. Siehe "OUTPUT/K"
OUTPUT/K(*) Setzt das AusgabegerΣt. M÷gliche Optionen sind:
Paula8 Standard 8Bit Ausgabe ⁿber die Amiga-Hardware. Dies ist die
Voreinstellung.
Paula14 Schaltet auf 14Bit Wiedergabe. Achtung! Dies ist eine Hack-
Routine, die direkt die Hardware-Register anspricht. Ich habe
alles getan, das mir einfiel, um andere Tasks zu schⁿtzen,
aber man wei▀ ja nie... Vorsicht also bei der Anwendung.
Paula14c Das gleiche wie bei Paula14, aber mit Kalibrierungs-
Preferenzen fⁿr bessere WiedergabequalitΣt. Siehe
Kapitel 2.
MPro Verwendet das MacroSystem Maestro Pro Bord fⁿr die Ausgabe.
Dabei werden nur 44.1kHz und 48kHz unterstⁿtzt. Bei der
44.1kHz Wiedergabe mu▀ ein sauberes Signal am Eingang
der Karte anliegen, fⁿr detailiertere Informationen sei die
Anleitung von Maestix und der MPro-Karte empfohlen.
8SVX Der Sound soll nicht abgespielt sondern in ein IFF-8SVX File
geschrieben werden. Im Grunde genommen ist dies die Ausgabe von
<Paula8> umgeleitet in ein File. Der Dateiname ist der der
Eingabedatei mit angehΣngtem "iff".
ACHTUNG: Alle Limits von <Paula8> gelten auch hier - also:
- 16Bit Sounds werden auf 8 Bit reduziert - schlechtere
QualitΣt
- Wenn FAST nicht gesetzt ist, wird die Sample-Rate auf
28kHz reduziert
Ich empfehle dringend, das Original-File zu behalten, wenn
genug Platz dafⁿr ist. Die EnttΣuschung ⁿber die SoundqualitΣt
beim Kauf eines besseren Sound-Systems k÷nnte sonst gro▀ sein!
FILTER/K(*) FILTER=ON : Audio Filter EIN bei Wiedergabe
FILTER=OFF : Audio Filter AUS bei Wiedergabe
FILTER=AUTO: Filter abhΣngig von der Samplerate setzen
Wenn FILTER nicht angegeben wird, lΣ▀t Play16 die Register
des AudioFilters unberⁿhrt.
LOOPS/N Gibt die Anzahl der Wiederholungen an. Voreinstellung ist
LOOPS=1 (spielt den Sound einmal).
LOOPS=0 bedeutet endlose Wiedergabe.
Weitere Optionen:
SCREENMODE/N Art des Bildschirms, der wΣhrend der Wiedergabe ge÷ffnet
(*) werden soll. SCREENMODE=0 ÷ffnet einen standard productivity
Screen.
SINGLE/S Benutzt nur einen Buffer statt zwei und lΣdt alle Daten auf
einmal in den Speicher.
PRIORITY/N Setzt die PrioritΣt von Play16, dabei k÷nnen Werte zwischen
-25 und 25 angegeben werden, Voreinstellung ist 1.
BUFFER/N Gr÷▀e des Buffers in Samples. Kann zwischen 32768 und 131072
liegen. Die Menge des belegten Speichers hΣngt au▀erdem vom
Typ des Sounds ab (Stereo oder Mono, 8 oder 16 Bit).
Voreinstellung ist 65536 Samples, die Werte werden auf ein
Vielfaches von 32768 gerundet.
▄brigens ist es sinnlos, diesen Wert zu Σndern, wenn der
SINGLE Buffer Modus gesetzt ist :-)
PRELOAD/S LΣdt genug Daten in den Speicher, um die Wiedergabe auf einen
Tastendruck hin zu starten
RAW/S Schaltet die Dateityperkennung ab und teilt Play16 mit, was
das Format des Sounds ist.
Sollte Play16 das Format nicht selber erkennen k÷nnen, wird
ebenfalls auf RAW geschaltet. Soll dies verhindert werden,
kann STRICT gesetzt werden:
STRICT/S Spielt nur Files, die von der AutoDetect-Routine erkannt
werden. Dies ist sinnvoll, wenn z.B. keine pl÷tzlichen
KrachgerΣusche erwⁿnscht sind (wenn z.B. Bilder statt
Sounds angeh÷rt werden sollen :-)
Beispiele:
a) Play16 music.wav
spielt das File "music.wav" einmal direkt von der Platte.
b) Play16 music.wav SINGLE
wie vor, lΣdt aber die Daten zunΣchst in den Speicher.
c) Play16 music.wav SINGLE VERBOSITY=1
wie vor, gibt aber zusΣtzliche Informationen aus.
d) Play16 rhythm.wav LOOPS=10
spielt den Rhythmus als fortlaufende Schleife (10mal).
e) Play16 explosion.wav SINGLE PRELOAD
lΣdt die Explosion in den Speicher und wartet auf einen Tastendruck
<return> vor dem Abspielen.
f) Play16 MyFavouriteTune.wav FAST OUTPUT=8SVX
konvertiert das angegebene File nach IFF-8SVX ohne ─nderung der
Samplerate
g) Play16 MyFavouriteTune.wav OUTPUT=8SVX
wie vor, begrenzt aber die Samplerate der konvertierten Datei auf
28 kHz!
Die folgenden Optionen teilen Play16 mit, welche Parameter benutzt werden
sollen, wenn der RAW-Modus angewendet wird. Dies ist entweder beim Setzen
von RAW der Fall oder wenn Play16 das File nicht identifizieren kann und
STRICT _nicht_ gesetzt ist.
Optionen im RAW Modus:
FREQ/N Sample-Frequenz in Hz
TRACKS/N Tracks, 1 = Mono, 2 = Stereo
BITS/N Aufl÷sung in Bits, 8 oder 16
HEADER/N LΣnge des Headers: soviele Bytes sollen am Anfang des
Files ignoriert werden.
UNSIGNED/S Daten sind ohne Vorzeichen, nur bei 8 Bit Sounds
INTEL/S Daten sind im Intel Format, nur bei 16 Bit Sounds
ULAW/S Daten sind komprimiert mit uLaw
Die Voreinstellungen sind: 22050 Hz, Mono, 8 Bit, kein Header.
Wie wende ich dies im RAW Modus an?
-----------------------------------
Tjaaaaa...
Wenn das Format des Soundfiles bekannt ist, sollten
RAW, FREQ, TRACKS, BITS, UNSIGNED und INTEL entsprechend gesetzt werden.
Sind die Werte nicht bekannt, bleibt nur Ausprobieren ⁿbrig. Hier einige
Tips, um es etwas einfacher zu gestalten:
Der HEADER sollte auf geraden Werten stehen (zunΣchst erstmal 0)
Wenn BITS 16 sein sollen, und es kommt nur Rauschen, kann INTEL probiert
werden.
Wenn BITS 8 sind und der Sound verzerrt klingt, kann UNSIGNED probiert werden.
Wenn dies nicht hilft, sollten verschiedene Kombinationen von BITS, INTEL
und UNSIGNED probiert werden.
Wenn ein erkennbares Ergebnis erreicht wurde und der Sound zu schnell oder
zu langsam lΣuft, sollte mit TRACKS und FREQ experimentiert werden.
Wenn bekannte Files und unbekannte gespielt werden sollen, ohne die
Kommandozeile zu Σndern, sollten einfach alle bekannten Daten der Raw-Files
angegeben werden und die Keywords RAW und STRICT ausgelassen bleiben. Wenn
Play16 dann den Sound identifizieren kann, benutzt es die im File
angegebenen Werte - sonst verwendet es die Parameter der Kommandozeile.
Rechtliches
-----------
Play16 unterliegt dem Copyright, ist aber FreeWare. Es darf frei kopiert
werden, solange keine ─nderungen am Programm und den begleitenden
Dokumentationen vorgenommen wurden. Eine Unkostenbeteiligung in H÷he der
Selbstkosten darf erhoben werden.
Play16 darf nicht fⁿr kommerzielle Zwecke verwendet oder in einem
kommerziellen Product enthalten sein, ohne da▀ eine schriftliche
Genehmigung des Autors vorliegt.
Jegliche Verantwortung fⁿr beschΣdigte Lautsprecher, VerstΣrker, Amigas oder
andere bei der Verwendung von Play16 beteiligten GerΣte wird ausdrⁿcklich
abgelehnt.
Obwohl ich einige Betatests durchgefⁿhrt habe, kann ich nicht garantieren,
da▀ Play16 nicht crasht! Jeder aufgefundene Fehler sollte mir berichtet
werden.
Es ist weder der Fehler von MacrosSystem noch reprΣsentiert es die QualitΣt
der Produkte von MacroSystem, sollte die Ausgabe von MPro oder der
maestix.library nicht funktionieren.
Verschiedenes
-------------
Ich sage nicht, da▀ Play16 schnell ist. Ich habe einiges optimiert, aber da
das Lade/Konvertier-Modul universell ist, werden mehr Daten hin- und
hergeschoben, als tatsΣchlich zum Abspielen n÷tig wΣre.
Dennoch habe ich seperate optimierte Routinen fⁿr 8 Bit und 14/16 Bit
eingebaut.
Ich kann unter folgenden Adressen erreicht werden:
Internet: wenzel@unixserv.rz.fh-hannover.de (vorzugsweise)
Thomas_Wenzel@aventure.fido.de
Fido: 2:243/6050.28 oder 2:241/1035.6
Mail-Routing im Fido ist NICHT immer verlΣ▀lich!
Wer dieses Programm verwendet, sollte mir bitte eine Mail schicken. Ich
wⁿ▀te gerne, wie viele Leute daran interessiert sind.
Entwicklungsgeschichte
----------------------
Bitte in der englischen Dokumentation nachlesen
Folgendes war fⁿr 1.4 geplant, konnte aber wegen fehlender Zeit nicht
verwirklicht werden:
----------------------------------------------------------------------------
- Fibonacci Delta Dekomprimierung fⁿr 8SVX Samples
- ALL/S Keyword, um Unterverzeichnisse einzubinden
Zukⁿnftiges
-----------
- Bessere VOC-Unterstⁿtzung
- ADPCM Decompression (Schwierigkeiten bei der Programmierung!
wer einen funktionierenden ADPCM4 Decoder hat,
bitte melden)
- einige Filetype von MacIntosh Software (z.B. Sound-Designer)
- Datatypes ▄nterstⁿtzung
Bekannte Fehler
---------------
Einige Files enthalten zusΣtzliche Informationen NACH den Sounddaten.
Play16 erkennt dies nicht und versucht daher, die Daten zu spielen. Das
Ergebnis ist ein kurzer "Biep" am Ende des Sounds. Bislang habe ich nur
einige *wenige* WAVs mit diesem zusΣtzlichen Block am Ende des Files
entdeckt.
Danksagungen
------------
Danke geht an die folgenden Personen:
Kai Stuke fⁿr wichtige Tips zur C-Programmierung und zum Audio-
Device des Amiga, au▀erdem fⁿr das BetaTesten von Play16
Marc Fⁿhrer fⁿr Betatesten und Tips zur Codeoptimierung, sowie fⁿr
die deutsche Version dieser Anleitung
Clete Baker fⁿr die Spezifikationen von AIFF und SDII
Richard K÷rber fⁿr die Maestix Library und dafⁿr, da▀ sie FreeWare ist
Christian Buchner fⁿr seine Forschungen und Ideen zur 14Bit Ausgabe und
deren Kalibrierung
Und an alle die, die mir geschrieben haben!